在前一天的內容我們看完了一個簡單的RNN實作,雖然從結果來看實作成果好像還不錯,但是如果真正應用在更複雜的題目上,所得出的結果可能就會令人大失所望了。
今天來介紹另一種改良版的RNN—LSTM(長短期記憶),這種神經網路發明出來改良了一般RNN在長期記憶時會發生遺忘的情形。LSTM與RNN最大的區別就在於遺忘、輸入以及輸出的閥(gate),有了這些閥(gate)的幫助,LSTM才能夠記住長時間的記憶。
(1)Forget gate(遺忘閥)
Forget gate(遺忘閥)顧名思義就是用來遺忘的,他會接收前一個時間段傳來的資料以及現在時間的資料以sigmoid激勵函式(activation function)來做運算來決定遺忘的資訊。有關sigmoid激勵函式的介紹可以回去看看【Day 02】MLP(多層感知機 Multi-Layer Perceptron)的內容。
(2)Input gate(輸入閥)
Input gate(輸入閥)將前一個時間段的資料以及現在時間段的資料進行運算後,得出真正的此階段要儲存的資訊。
在Input gate的第一階段,會將前一階段的紀錄與現在階段的輸入以sigmoid激勵函式以及tanh激勵函式做運算來得出結果。(tanh激勵函式同樣可以在【Day 02】中找到)
第二階段則將forget gate以及input gate得出的結果做整合運算,運算出的結果就是本次階段要記憶的內容。
(3)Output gate(輸出閥)
看到output gate(輸出閥)的名字應該就可以猜到,他的功能就是來決定輸出的內容,他會先經過sigmoid激勵函式運算過去紀錄和現在的輸入,再透過tanh激勵函式轉換,最終得出輸出的結果並切保留一份到下一個時間序列做運算。
圖片來源:https://colah.github.io/posts/2015-08-Understanding-LSTMs/